package cn.tedu.generic;
/**
 * @Author 金帮嘉诚
 * @Date 2021-06-18 周五 16:06
 */
/*本类用于测试泛型的优点2*/

/**
 * 知识点：
 * for(1 2:3)
 * 3要遍历的元素
 * 1元素类型
 * 2每次遍历获得的元素名字
 */
public class TestGeneric2 {
    public static void main(String[] args) {
        Integer[] a = {1, 2, 3, 4, 5, 6, 7};
        String[] b = {"大哥", "二哥", "三哥", "四哥", "五哥", "六哥", "小弟"};
        Double[] c = {6.0, 6.6, 6.66, 6.666, 6.6666};
        print(a);
        print(b);
        print(c);
    }

    //没有用泛型的方法
//    private static void print(Integer[] a) {
//        //
//        /*普通for循环的好处是可以设置循环的步长（怎么变化）*/
////        for (int i = 0; i < a.length; i++) {
////            System.out.println(a[i]);
////        }
//        /*高效for循环（增强for循环）
//         *格式：for(1 2:3){循环体}
//         * 3是要遍历的元素
//         * 1是每次遍历得到的元素的类型
//         * 2是遍历得到的元素的名字
//         * 好处：比普通for循环写法简单，效率高
//         * 坏处：没有办法按照下标操作值，只能从头到尾依次遍历
//         * */
//        //
//        for (Integer i : a
//        ) {
//            System.out.println(i);
//        }
//
//    }
//
//    private static void print(Double[] c) {
////
////        for (int i = 0; i < c.length; i++) {
////            System.out.println(c[i]);
////        }
//        for (Double d:c
//             ) {
//            System.out.println(d);
//        }
//    }
//
//    private static void print(String[] b) {
////        for (int i = 0; i < b.length; i++) {
////            System.out.println(b[i]);
////        }
//        for (String s:b
//             ) {
//            System.out.println(s);
//        }
//    }
//没有继承 神似多态
    /*1.泛型可以实现通用代码的编写，使用E表示元素的类型是Element类型*/
    /*2.如果在方法上使用泛型，必须两次同时出现
     * 一个是传入参数的类型是泛型，另一个是返回值前的泛型类型*/
    private static <E> void print(E[] a) {
        for (E e : a
        ) {
            System.out.println(e);
        }

    }


}
